package org.example.back.service.advice;

import org.example.back.entity.plan.WeightLossPlan;
import org.example.back.mapper.plan.WeightLossPlanMapper;
import org.example.back.service.healthassistant.HealthAssistantService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDate;

@Service
public class WeightLossPlanAdviceService {
    @Autowired
    private WeightLossPlanMapper weightLossPlanMapper;
    @Autowired
    private HealthAssistantService healthAssistantService;

    public String getAdvice(Integer userId, LocalDate startDate) {
        WeightLossPlan plan = weightLossPlanMapper.selectByUserIdAndStartDate(userId, startDate);
        if (plan == null) return "未找到对应的减脂计划。";

        String prompt = String.format("""
            请根据以下减脂计划数据生成包括以下四类建议内容（不要生成表格，只生成文字）：
            1. 阶段建议（如适应期、初步成果、中期检查、目标完成等）
            2. 每周训练计划（逐日列出训练安排）
            3. 饮食建议（包含蛋白质、碳水、脂肪摄入建议，每日热量，三餐建议）
            4. 其他健康建议（如睡眠建议、恢复策略、进度追踪）
            
            - 减脂目标: %s
            - 目标体重: %.1fkg
            - 总计划减重: %.1fkg
            - 每周目标减重: %.1fkg
            - 重点区域: %s
            - 开始日期: %s
            - 持续时间: %s
            - 训练频率: %s
            """,
            plan.getGoal(), plan.getTargetWeight(),
            plan.getTotalWeightLoss(), plan.getWeeklyWeightLoss(),
            plan.getFocusArea(), plan.getStartDate(), plan.getDuration(),
            plan.getTrainingFrequency()
        );

        return healthAssistantService.getAnswerFromLLM(prompt);
    }
}